const axios = require('axios');

// 流式响应处理函数
const streamResponse = async (message, onChunk) => {
    try {
        // 创建事件源连接本地 API 代理
        // 注意：这里使用的是本地 Node.js 服务的代理，而不是直接连接 Spring Boot
        const eventSource = new EventSource(`/api/proxy-assistant?userInput=${encodeURIComponent(message)}`);
        
        // 使用累积缓冲区存储内容
        let accumulatedContent = '';
        
        // 处理消息事件
        eventSource.onmessage = (event) => {
            try {
                const data = JSON.parse(event.data);
                if (data.content) {
                    accumulatedContent += data.content;
                    onChunk(accumulatedContent);
                }
            } catch (error) {
                console.error('解析消息时出错:', error);
            }
        };
        
        // 处理错误事件
        eventSource.onerror = (error) => {
            console.error('EventSource 错误:', error);
            eventSource.close();
            
            // 如果在错误发生前没有收到任何内容，通知错误
            if (!accumulatedContent) {
                onChunk("连接到 AI 服务失败，请稍后重试。");
            }
        };
        
        // 返回清理函数
        return () => {
            eventSource.close();
        };
    } catch (error) {
        console.error('创建流式响应时出错:', error);
        onChunk("发生错误: " + error.message);
    }
};

module.exports = {
    streamResponse
};